package cn.fornever.tools.util;

import java.io.*;
import java.util.Enumeration;
import java.util.Properties;


/**
 * Properties工具类
 *
 * @author ZhangAY
 * @see java.util.Properties
 */
public class PropertyUtil {

    /**
     * 根据指定的{@code file},获取Properties
     *
     * @param file 指定的属性文件
     * @return Properties
     */
    public static Properties getProperties(File file) {
        Properties props = new Properties();
        InputStream in;
        try {
            in = new FileInputStream(file);
            props.load(in);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return props;
    }

    /**
     * 获取{@code properties}中属性名前缀为字符串{@code prefix}的属性,
     * 组成新的{@link java.util.Properties}对象并返回.
     * <p>需要注意的是,返回的{@link java.util.Properties}对象中,已去掉属性名中的{@code prefix}部分.
     *
     * @param properties 要过滤的Properties对象
     * @param prefix     属性名前缀
     * @return 如果 {@code properties} 为 {@code null} ,或{@code prefix}为{@code ""}或{@code null},那么返回{@code properties}自身;
     * 否则返回{@code properties}中属性名前缀为指定字符串{@code prefix}的属性组成的新{@link java.util.Properties}对象,
     * 返回结果已去掉属性名中的{@code prefix}部分.
     */
    public Properties getProperties(Properties properties, String prefix) {
        if (properties == null || "".equals(prefix) || prefix == null) {
            return properties;
        }
        Properties props = new Properties();
        Enumeration<?> en = properties.propertyNames();
        String key;
        int len = prefix.length();
        while (en.hasMoreElements()) {
            key = en.nextElement().toString();
            if (key.startsWith(prefix)) {
                props.put(key.substring(len), properties.getProperty(key));
            }
        }
        return props;
    }

}
